package modelo;

import java.util.Iterator;

import modelo.ModeloJuego.PosicionableTipo;

public class MinaContacto extends Mina {
	
	static final int costo = 150;
	static final int rango = 0;
	private boolean detonada;
	
	public MinaContacto(Casillero casilleroCentral) {
		super(costo, casilleroCentral, rango);
		this.detonada = false;
	}

	public void efectuarSobre(Casillero casillero) {
		
		Iterator<Posicionable> iteradorDeContenido = casillero.iteradorDeContenido();
		
		while (iteradorDeContenido.hasNext()) {	 		
			Posicionable actual = iteradorDeContenido.next();
			actual.recibirDisparo(this, casillero);
			if (actual.estaDestruida()) {
				iteradorDeContenido.remove();
				actual.quitarDeTablero();
			}
		}
	} 
	
	public void explosion() {
		this.detonada = true;
	}
	
	
	public void recibirDisparo(DisparoDirecto disparo, Casillero casillero) {
		this.efectuarSobre(this.getCasilleroCentral());
		this.explosion();
	}

	
	public void recibirDisparo(MinaConRetardo mina, Casillero casillero) {
		
	}
	
	
	public void recibirDisparo(MinaContacto mina, Casillero casillero) {
		
	}
	
	
	public void actuar() {
		if (this.getCasilleroCentral().contieneNave()) {
			this.efectuarSobre(this.getCasilleroCentral());
			this.explosion();
			this.quitarDeTablero();
		}
	}
	
	public boolean estaDestruida() {
		return this.detonada;
	}
		
	public PosicionableTipo devolverTipo() {		
		return PosicionableTipo.MINA_CONTACTO;
	}

}
